home *** CD-ROM | disk | FTP | other *** search
/ ETO Development Tools 4 / ETO Development Tools 4.iso / Tools - Objects / Virtual User 1.0 / Example Libraries / UtilityTasksLib.vu < prev   
Text File  |  1991-01-25  |  8KB  |  245 lines

  1. #
  2. #    File:        UtilityTasksLib.vu
  3. #
  4. #    Contains:    contains utility tasks for any scripts. Use Mark menu to
  5. #                reach the desired task. The tasks are commented on what they do.
  6. #
  7. #    Written by:    P Nagarajan
  8. #
  9. #    Copyright:    © 1991 by Apple Computer, Inc., all rights reserved.
  10. #
  11. #    Change History:
  12. #
  13. #         1/7/91       naga         creation 
  14. #
  15. #    To Do:
  16. #
  17.  
  18. (************************************************************************************
  19. *    Task    GracefulExit( msg )
  20. *    Exits VU after printing the supplied 'msg' along with script execution time
  21. ************************************************************************************)
  22. Task GracefulExit(msg := '')
  23. begin
  24.     println msg;
  25.     if( TypeOf( global start_time ) <> 'undefined' )
  26.         println "started at  : ", global start_time;
  27.     println "finished at : ", match[time];
  28.     exit;
  29. end; #GracefulExit
  30.  
  31. (************************************************************************************
  32. *    Task    UseKeyboardEquivalent( alias )
  33. *    Do Menu command using key equivalent
  34. ************************************************************************************)
  35. task UseKeyboardEquivalent(alias) 
  36. begin
  37.     pressKey k: { commandKey };
  38.     type k: { alias };
  39.     releaseKey k: { commandKey };
  40. end; #UseKeyboardEquivalent
  41.  
  42. (************************************************************************************
  43. *    Task    NumberOfWindows()
  44. *    Returns the total number of open windows
  45. *    In system 7.0's Finder the Desktop is considered a window. This task
  46. *    ignores that window and returns the number of regular open windows.
  47. ************************************************************************************)
  48. Task    NumberOfWindows()
  49. Begin
  50.     all_windows := collect[window];
  51.     match[application t:?app_name]!;
  52.     if not (global System7) 
  53.          return card all_windows;
  54.     else if global System7 and (app_name ~= /≈Finder≈/ ) 
  55.         return card all_windows - 1;
  56. end; #NumberOfWindows
  57.  
  58. (************************************************************************************
  59. *    Task    RunningSystemSeven()
  60. *    Is the target running System 7.0.x?
  61. ************************************************************************************)
  62. Task    RunningSystemSeven()
  63. Begin
  64.     match [system v:?sys_version];
  65.     return (sys_version ~= /7≈/);         # 7.0.x system software on target
  66. end; #RunningSystemSeven
  67.  
  68. (************************************************************************************
  69. *    Task    OpenOneWindow()
  70. *    This task leaves one window open in the Finder
  71. ************************************************************************************)
  72. task OpenOneWindow()
  73. begin
  74.     success := true;
  75.     NumWindows := NumberOfWindows();
  76.     if ( NumWindows = 1 ) do
  77.         return success;
  78.     else if ( NumWindows > 1) do
  79.     begin
  80.         all_windows := collect[window];
  81.         for each w in all_windows do
  82.         begin
  83.             close[window o:1]!;
  84.         end;#for each window
  85.     end;
  86.  
  87.     NumWindows := NumberOfWindows();
  88.     if ( NumWindows = 0 ) do
  89.     begin
  90.         if (match [menuItem t:'Open' m:'File' e:true]!) do
  91.         begin
  92.             select [menuItem t:'Open' m:'File']!;
  93.             success := NumberOfWindows();
  94.         end; #if a window can be opened thru' the menu
  95.         else do
  96.             success := false;
  97.     end; #no windows currently
  98.     else do #could not close all windows
  99.         success := false;
  100.     return success;
  101. end; #task OpenOneWindow
  102.  
  103. (************************************************************************************
  104. *    Task    FindObjectInWindow( at_x, at_y )
  105. *    this task moves the mouse on to a particular object of interest. Very useful 
  106. *    to select files in "view by name" mode in Finder.
  107. *    this assumes that the file/icon/object you want to select is on the frontmost 
  108. *    window with coordinates (at_x, at_y) relative to the window's origin
  109. ************************************************************************************)
  110. Task FindObjectInWindow (at_x, at_y)
  111. begin
  112.     match [window o:1 r:?rect]!;
  113.     icon_x := rect[1] + at_x;
  114.     icon_y := rect[2] + at_y;
  115.     move a:{icon_x, icon_y};
  116. end; #FindObjectInWindow
  117.  
  118.  
  119. (************************************************************************************
  120. *    Task    LaunchAppInSystem6( appName, launch_wait )
  121. *    Check for app running and/or attempt to get there by:
  122. *    double-clicking the topmost file (in View by Name) in the frontmost window 
  123. *    in Finder. ( Intended for use under System 6.0.x ) 
  124. *    launch_wait is the number of seconds to wait before checking for successful
  125. *    launch of the application.
  126. ************************************************************************************)
  127. Task    LaunchAppInSystem6( appName := "", launch_wait := 2 )
  128. Begin
  129.     match[application t:?front_App]!;
  130.     if not (front_App ~= /≈{appName}≈/) 
  131.     begin
  132.         if (not OpenOneWindow()) 
  133.         begin
  134.             println "Could not launch {appName}";
  135.             return false;
  136.         end;
  137.         select [menuItem t:'by Name' m:'View'];
  138.         All_Scrollbars := collect [ scrollbar w:1 ];
  139.         for each sb in All_Scrollbars
  140.             if( sb.r[2] < 32 )
  141.                 Scroll sb a:{ 0, 1 };
  142.         FindObjectInWindow( 9, 46);#first file
  143.         DoubleClick;
  144.         wait(launch_wait); 
  145.         match[application t:?front_App]!;
  146.         if not (front_App ~= /≈{appName}≈/) 
  147.         begin
  148.             println "Failed to launch {appName}";
  149.             return false;
  150.         end;
  151.     end; 
  152.     return true;
  153. end; #LaunchAppInSystem6
  154.  
  155. (************************************************************************************
  156. *    Task    LaunchAppInSystem7( AppName )
  157. *    Check for app running and/or attempt to get there by:
  158. *    Using Finder's Find command to select the App, then using the open command.
  159. *    ( This works only under System 7.0 )
  160. *    launch_wait is the number of seconds to wait before checking for successful
  161. *    launch of the application.
  162. ************************************************************************************)
  163. Task    LaunchAppInSystem7( appName := "", launch_wait := 4 )
  164. Begin
  165.     match[application t:?front_App]!;
  166.     if not (front_App = appName) 
  167.     begin
  168.         if (not OpenOneWindow()) 
  169.         begin
  170.             println "Could not launch {appName}";
  171.             return false;
  172.         end;
  173.  
  174.         select [ menuitem t:"Find" ];
  175.         type k:{ appName, returnKey };
  176.         wait(2);
  177.         
  178.         select [ menuitem t:"Open" ];
  179.         wait(launch_wait);
  180.         
  181.         match[application t:?front_App]!;
  182.         if not (front_App = appName) 
  183.         begin
  184.             Println "Failed to launch ", appName;
  185.             return false;
  186.         end;
  187.     end;
  188.     return true;
  189. end; #LaunchAppInSystem7
  190.  
  191.  
  192. # *****************************************************************************************
  193. task CheckForAlertWindow(override_alerts := false) 
  194. #handles alert dialogs with 'OK' and 'Cancel' buttons.
  195. #if override_alerts is true then select 'OK' else 'Cancel'
  196. begin
  197.     if(match[button w:[window ord:1 style:dialog] t:'OK']!) begin
  198.         text_messages := collect[staticText w:[window ord:1 style:dialog]]!;
  199.         println "dismissing dialog that came up after resource type selection -- static text messages follow:";
  200.         for each m in text_messages println " ∂t",m.t;
  201.         if override_alerts select [button t:'OK' w:[window ord:1 style:dialog]]!;
  202.         else select [button t:'Cancel' w:[window ord:1 style:dialog]]!;
  203.     end;#if dialog appeared
  204. end;#CheckForAlertWindow
  205.  
  206.  
  207. # *****************************************************************************************
  208. task ThrowItemToTrash(print_any_error := true, override_alerts := false)
  209. # this task trashes a specified object in Finder.
  210. # task assumes that the mouse is already positioned on the item to be trashed
  211. # and that the trash can is positioned on the main screen at (-40,-40) relative to
  212. # the lower right corner.
  213. # Arguements: 'print_any_error' can be used to suppress error messages and
  214. #              'override_alerts' can be used to trash despite alerts.
  215. begin
  216.     PressMouse;
  217.     match [screen r:?rect m:true]!;
  218.     if rect 
  219.     begin
  220.         trash_x := rect[3] - 40; #assumes trash can is at its usual location
  221.         trash_y := rect[4] - 40; #ie., (40,40) off form the right bottom corner of main screen
  222.         old_mouse_speed := mouseSpeed(5); #slow the mouse down
  223.         move a:{trash_x, trash_y};
  224.         #move a:{472, 301};#trash can on a SE
  225.         mouseSpeed(old_mouse_speed); #reset the mouse speed to what it was before
  226.         ReleaseMouse;
  227.         CheckForAlertWindow(override_alerts);
  228.         if match [menuItem t:'Empty Trash' m:'Special' e:true]!
  229.             select [menuItem t:'Empty Trash' m:'Special']!;
  230.         else 
  231.         begin
  232.             if print_any_error
  233.                 println "Empty Trash menu item not enabled, could not trash…";
  234.             return false;
  235.         end;
  236.     end;#if unified correctly
  237.     else 
  238.     begin
  239.         if print_any_error
  240.             println "Unable to find trash can, could not trash…";
  241.         return false;
  242.     end;
  243.     return true;
  244. end; #ThrowItemToTrash
  245.